﻿using System;
using System.Collections.Generic;
using System.Data.OleDb;
using DTO;

namespace DAO
{
    public class NhanVienDAO
    {
        private DataProvider dataProvider = null;

        public NhanVienDAO()
        {
            try
            {
                dataProvider = new DataProvider();
            }
            catch (OleDbException ex)
            {
                throw;
            }
        }

        public List<NhanVienDTO> GetListNV()
        {
            try
            {
                dataProvider.Connect();

                string query = "Select * From NhanVien";
                OleDbDataReader reader = dataProvider.ExeReader(query);

                List<NhanVienDTO> listResult = new List<NhanVienDTO>();
               
             
                while (reader.Read())
                {
                    NhanVienDTO nhanvien = new NhanVienDTO();
                    nhanvien.IMaNV = reader.GetInt32(0);
                    if(!reader.IsDBNull(1))
                        nhanvien.STenNV = reader.GetString(1);
                    if(!reader.IsDBNull(2))
                        nhanvien.BGioTinh = reader.GetBoolean(2);
                    if (!reader.IsDBNull(3))
                        nhanvien.DNgaySinh = reader.GetDateTime(3);
                    if(!reader.IsDBNull(4))
                        nhanvien.SNoiSinh = reader.GetString(4);

                    listResult.Add(nhanvien);
                }
               return listResult;
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                dataProvider.Disconnect();
            }
        }

        public bool InsertNV(NhanVienDTO nhanvien)
        {
            try
            {
                dataProvider.Connect();

                string query = "Insert into NhanVien(tennv,gioitinh,ngaysinh,noisinh) values('{0}',{1},'{2}','{3}')";
                query = string.Format(query,nhanvien.STenNV,nhanvien.BGioTinh,nhanvien.DNgaySinh.ToShortDateString(),nhanvien.SNoiSinh);
                
                dataProvider.ExeNonQuery(query);

                return true;                             
            }
            catch (Exception ex)
            {
                throw new Exception("Thêm nhân viên " + nhanvien.STenNV + " thất bại",ex);
            }
            finally
            {
                dataProvider.Disconnect();
            }
        }

        public bool DeleteNV(int manv)
        {
            try
            {
                dataProvider.Connect();

                string query = "Delete From NhanVien Where manv = " + manv.ToString();
                dataProvider.ExeNonQuery(query);

                return true;
            }
            catch (Exception ex)
            {
                throw new Exception("Xóa nhân viên có mã " + manv + " thất bại", ex);
            }
            finally
            {
                dataProvider.Disconnect();
            }
        }
    }
}
